package nc.hw;

import com.sun.jdi.PathSearchingVirtualMachine;

import java.math.BigDecimal;
import java.util.Scanner;
import java.util.Stack;

/**
 * 描述
 * 考试题目和要点：
 *
 * 1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。
 *
 * 2、中文大写金额数字到“元”为止的，在“元”之后，应写“整字，如532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。
 *
 * 3、阿拉伯数字中间有“0”时，中文大写要写“零”字，阿拉伯数字中间连续有几个“0”时，中文大写金额中间只写一个“零”字，如6007.14，应写成“人民币陆仟零柒元壹角肆分“。
 * 4、10应写作“拾”，100应写作“壹佰”。例如，1010.00应写作“人民币壹仟零拾元整”，110.00应写作“人民币壹佰拾元整”
 * 5、十万以上的数字接千不用加“零”，例如，30105000.00应写作“人民币叁仟零拾万伍仟元整”
 */
public class HJ95 {

    public static String convert(double money) {
        // 使用一个栈来记录
        Stack<Character> stack = new Stack<>();
        Stack<Character> dw = new Stack<>();
        dw.push(' ');
        stack.push(' ');
        String nums = "零壹贰叁肆伍陆柒捌玖";
        String wx = "亿万仟佰拾元角分";
        long toInt = new BigDecimal(String.valueOf(money)).multiply(BigDecimal.valueOf(100)).longValue();
        int i = 0;
        boolean toWan = false;
        while (toInt != 0) {
            final int num = (int) (toInt % 10);
            if (num != 0 || i >= 2) {

                if (stack.peek()!=0 || num != 0) {
                    stack.push(nums.charAt(num));
                    dw.push(wx.charAt(wx.length() - i - 1));
                }
                // 到了万就要重新计算
            }
            toInt = toInt / 10;

            if (dw.peek()=='万'){
                i = 2;
                toWan = true;
            }
            if (dw.peek() =='仟' && toWan) {
                i = wx.length() - 2;
            }
            i ++;
            if (i >= wx.length()) {
                // 从十开始了
                i = 3;
                toWan = false;
            }

        }
        StringBuilder sb = new StringBuilder("人民币");
        while (!stack.isEmpty() && stack.peek()!=' ') {
            final Character _num = stack.pop();
            final Character _dw = dw.pop();
            // 如果是零。可以不加单位。如果
            if (_num=='零') {
                if (_dw=='万' || _dw=='亿') {
                    if(sb.charAt(sb.length() - 1) == '零') {
                        sb.deleteCharAt(sb.length() - 1);
                    }
                    sb.append("万");
                } else {
                    if (sb.charAt(sb.length() - 1) != '零') {
                        sb.append('零');
                    }
                }

            } else {
                if (_num != '壹' || (_dw!='拾') ) {
                    sb.append(_num);
                }

                sb.append(_dw);
            }

        }
        final char c = sb.charAt(sb.length() - 1);
        if (c =='元') {
            sb.append('整');
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            double num = scanner.nextDouble();
            System.out.println(convert(num));
        }
    }
}
